#define _CRT_SECURE_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//方法一，试除法
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int max = (a > b) ? a : b;
//	int i = 0;
//	for (i = max; i >= 0; i--)
//	{
//		if ((a % i == 0) && (b % i == 0))
//		{
//			printf("%d", i);
//			break;
//		}
//
//	}
//
//
//	return 0;
//}
//方法一，试除法另一个形式
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int max = (a > b) ? a : b;
//	int i = 0;
//	while (1)
//	{
//		if ((a % max == 0) && (b % max == 0))
//		{
//			printf("%d", max);
//			break;
//		}
//		max--;
//
//	}
//
//
//	return 0;
//}
//方法三，辗转相除法
//int main()
//{
//	int m = 0;
//	int n = 0;
//	scanf("%d %d", &m, &n);
//	int k = 0;
//	while (k = m % n)//赋值的时候，也进行了判断
//	{
//		m = n;
//		n = k;
//	}
//	//while总体的作用是将m n两者彼此相余结果（k），并且会保留二者较小值和k，一直循环，知道k=0；则较小值n为最大公约数
//	printf("%d", n);
//
//	return 0;
//}
//最大公约数
//给定两个数，求这两个数的最大公约数
//例如：
//输入：20 40
//输出：20


//#include <stdio.h>
//int main()
//{
//	int day = 0;
//	scanf("%d", &day);
//	switch (day)
//	{
//	case 1:
//		printf("星期一\n");
//		break;
//	case 2:
//		printf("星期二\n");
//		break;
//	case 3:
//		printf("星期三\n");
//		break;
//	case 4:
//		printf("星期四\n");
//		break;
//	case 5:
//		printf("星期五\n");
//		break;
//	case 6:
//		printf("星期六\n");
//		break;
//	case 7:
//		printf("星期天\n");
//		break;
//	}
//	return 0;
//}

#include <stdio.h>
//switch代码演示
//int main()
//{
//	int day = 0;
//	scanf("%d", &day);
//	switch (day)
//	{
//	case 1:
//	case 2:
//	case 3:
//	case 4:
//	case 5:
//		printf("weekday\n");
//		break;
//	case 6:
//	case 7:
//		printf("weekend\n");
//		break;
//	}
//	return 0;
//}


//int main()
//{
//	int n = 1;
//	int m = 2;
//	switch (n)
//	{
//	case 1:
//		m++;
//	case 2:
//		n++;
//	case 3:
//		switch (n)
//		{//switch允许嵌套使用
//		case 1:
//			n++;
//		case 2:
//			m++;
//			n++;
//			break;
//		}
//	case 4:
//		m++;
//		break;
//	default:
//		break;
//	}
//	printf("m = %d, n = %d\n", m, n);
//	return 0;
//}

//break 代码实例
//#include <stdio.h>
//int main()
//{
//	int i = 1;
//	while (i <= 10)
//	{
//		if (i == 5)
//			break;
//		printf("%d ", i);
//		i = i + 1;
//	}
//	return 0;
//}
/*break在while循环中的作用：
其实在循环中只要遇到break，就停止后期的所有的循环，直接终止循环。
所以：while中的break是用于永久终止循环的*/

//continue 代码实例1
//#include <stdio.h>
//int main()
//{
//	int i = 1;
//	while (i <= 10)
//	{
//		if (i == 5)
//			continue;
//		printf("%d ", i);
//		i = i + 1;
//	}
//	return 0;
//}
//1 2 3 4然后死循环
//continue 代码实例2
//#include <stdio.h>
//int main()
//{
//	int i = 1;
//	while (i <= 10)
//	{
//		i = i + 1;
//		if (i == 5)
//			continue;
//		printf("%d ", i);
//	}
//	return 0;
//}
//2 3 4 6 7 8 9 10 11,  因为10也可以进入循环，然后+1打印
//总结:
//continue在while循环中的作用就是：
//continue是用于终止本次循环的，也就是本次循环中continue后边的代码不会再执行，
//而是直接跳转到while语句的判断部分。进行下一次循环的入口判断

//代码什么意思？
//代码1
//#include <stdio.h>
//int main()
//{
//	int ch = 0;
//	while ((ch = getchar()) != EOF)
//		putchar(ch);
//	return 0;
//}
//这里的代码适当的修改是可以用来清理缓冲区的

//代码1
//#include <stdio.h>
//int main()
//{
//	int i = 0;
//	for (i = 1; i <= 10; i++)
//	{
//		if (i == 5)
//			break;
//		printf("%d ", i);
//	}
//	return 0;
//}
//1 2 3 4

//代码2
//#include <stdio.h>
//int main()
//{
//	int i = 0;
//	for (i = 1; i <= 10; i++)
//	{
//		if (i == 5)
//			continue;
//		printf("%d ", i);
//	}
//	return 0;
//}
////1 2 3 4 6 7 8 9 10 

//#include <stdio.h>
//int main()
//{
//	int i = 1;
//	do
//	{
//		if (5 == i)
//			break;
//		printf("%d ", i);
//		i = i + 1;
//	} while (i <= 10);
//
//	return 0;
//}

//1 2 3 4
//#include <stdio.h>
//int main()
//{
//	int i = 1;
//
//	do
//	{
//		if (5 == i)
//			continue;
//		printf("%d ", i);
//		i = i + 1;
//	} while (i <= 10);
//
//	return 0;
//}
//1 2 3 4然后死循环
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = 1;
//	int i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		ret = ret * i;
//	}
//	printf("%d", ret);
//
//	return 0;
//}
//计算 n的阶乘。
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int sum = 0;
//	int ret = 1;
//	int i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		ret = ret * i;
//		sum = sum + ret;
//	}
//	printf("%d", sum);
//
//
//	return 0;
//}
//计算 1!+ 2!+ 3!+ …… + 10!
//int main()
//{
//	int n = 0;
//	int i = 0;
//	int ret = 1;
//	int sum = 0;
//	//1!+2!+3! = 1 + 2 + 6 = 9
//	//1!
//	//2! = 1*2
//	//3! = 1*2*3
//	//4! = 1*2*3*4
//	for (n = 1; n <= 10; n++)
//	{
//		ret = ret * n;
//		sum += ret;
//	}
//	printf("%d\n", sum);
//	return 0;
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int n = 0;
//	scanf("%d", &n);
//	int right = sizeof(arr) / sizeof(arr[0]);
//	int left = 0;
//	int mid = (left + right) / 2;
//	int flag = 0;
//	while (left <= right)
//	{
//		if (arr[mid] < n)
//		{
//			left = mid;
//			mid = (left + right) / 2;
//		}
//		if (arr[mid] > n)
//		{
//			right = mid;
//			mid = (left + right) / 2;
//		}
//		if (arr[mid] == n)
//		{
//			printf("找到了！n的下标是%d\n", mid);
//			flag = 1;
//			break;
//		}
//	}
//			if (flag == 0)
//			printf("没找到\n");
//	return 0;
//}
//在一个有序数组中查找具体的某个数字n。（讲解二分查找）
//在一个有序数组中查找具体的某个数字n
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//升序
//	//printf("%d\n", sizeof(arr));//计算的数组的总大小，单位是字节
//	//printf("%d\n", sizeof(arr[0]));//4
//	//printf("%d\n", sizeof(arr) / sizeof(arr[0]));
//	int k = 7;
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//1
//	int left = 0;
//	int right = sz-1;
//	int flag = 0;//flag的作用是标志是否找到了
//	//2
//	while (left<=right)
//	{
//		int mid = (left + right) / 2;
//		if (arr[mid] == k)
//		{
//			printf("找到了,下标是:%d\n", mid);
//			flag = 1;
//			break;
//		}
//		else if (arr[mid] < k)
//		{
//			left = mid + 1;
//		}
//		else
//		{
//			right = mid - 1;
//		}
//	}
//	//1 2
//	if (flag == 0)
//		printf("没找到\n");
//
//	return 0;
//}

//编写代码，演示多个字符从两端移动，向中间汇聚
//welcome to bit!!!!!
//###################
//w#################!
//we###############!!
//wel#############!!!
//...
//welcome to bit!!!!!
//welcome to bit!!!!!
//###################
//#include <string.h>
//#include <windows.h>
//Sleep需要一个windows.h的头文件

//int main()
//{
//	char arr1[] = "welcome to bit!!!!!";
//	char arr2[] = "###################";
//	int left = 0;
//	int right = strlen(arr1) - 1;
//
//	while (left <= right)
//	{
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		printf("%s\n", arr2);
//		Sleep(1000);//单位是毫秒
//		system("cls");//system函数可以执行系统命令，cls是清理屏幕
//		left++;
//		right--;
//	}
//	printf("%s\n", arr2);
//	return 0;
//} 

//int main()
//{
//	int i = 0;
//	char password[20] = { 0 };
//	for (i = 0; i < 3; i++)
//	{
//		printf("请输入密码:>");
//		scanf("%s", password);
//		if (strcmp(password, "123456") == 0)
//		{
//			printf("登录成功\n");
//			break;
//		}
//		else
//		{
//			printf("密码错误\n");
//		}
//	}
//	//1 2
//	if (i == 3)
//		printf("退出程序\n");
//
//	return 0;
//}
//编写代码实现，模拟用户登录情景，并且只能登录三次。（只允许输入三次密码，如果密码正确则
//提示登录成，如果三次均输入错误，则退出程序。
//int main()
//{
//	int i = 0;
//	char password[20] = { 0 };
//	int flag = 0;
//	for (i = 0; i < 3; i++)
//	{
//		printf("请输入密码:>");
//		scanf("%s", password);
//		if (strcmp(password, "123456") == 0)
//		{
//			printf("登录成功\n");
//			flag = 1;
//			break;
//		}
//		else
//		{
//			printf("密码错误\n");
//		}
//	}
//	//1 2
//	if (flag == 0)
//		printf("退出程序\n");
//
//	return 0;
//}
